<?php
/**
 * Created by PhpStorm.
 * User: huyi
 * Date: 2018/1/23
 * 消费  amqplib
 */
require_once __DIR__ . '../vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;

/**
 * 设置和生产者相同；我们首先打开一个连接和创建channel，并声明我们要消费的消息队列。注意： 和生产者发送的队列名一致。
 **/
$connection = new AMQPStreamConnection('localhost', 5672, 'huyi', 'huyi123');
$channel    = $connection->channel();

$msg        = "hello world";
$queue_name = 'hello';

$channel->queue_declare($queue_name, false, false, false, false);
/**
 *在我们将要告诉服务器将队列中的消息传递给我们之前，
 * 我们需要定义一个可以接收服务器发送的消息的回调函数。
 * 请注意，消息是从服务器异步发送到客户端。
 */
$callback = function ($msg){
    echo " [x] Received ", $msg->body, "\n";
};
$channel->basic_consume($queue_name, '', false, true, false, false, $callback);

while(count($channel->callbacks)){
    $channel->wait();
}

$channel->close();
$connection->close();
/**
 * 整合代码
 * 现在我们可以运行一下两个脚本。在命令行下，运行消费者(receive.php)
 * php receive.php
 * 1
 * 然后，运行生产者(send.php)
 * php send.php
 */
